<!DOCTYPE html>
<html>
<head>
    <title><%=title%></title>

</head>

<body>
<h1><%=title%></h1>
  <p>
      Node.js模块的实现

      之前在网上查阅了许多介绍Node.js的文章，可惜对于Node.js的模块机制大都着墨不多。在后续介绍模块的使用之前，我认为有必要深入一下Node.js的模块机制。
      CommonJS规范

      早在Netscape诞生不久后，JavaScript就一直在探索本地编程的路，Rhino是其代表产物。无奈那时服务端JavaScript走的路均是参考众多服务器端语言来实现的，在这样的背景之下，一没有特色，二没有实用价值。但是随着JavaScript在前端的应用越来越广泛，以及服务端JavaScript的推动，JavaScript现有的规范十分薄弱，不利于JavaScript大规模的应用。那些以JavaScript为宿主语言的环境中，只有本身的基础原生对象和类型，更多的对象和API都取决于宿主的提供，所以，我们可以看到JavaScript缺少这些功能：

      JavaScript没有模块系统。没有原生的支持密闭作用域或依赖管理。
      JavaScript没有标准库。除了一些核心库外，没有文件系统的API，没有IO流API等。
      JavaScript没有标准接口。没有如Web Server或者数据库的统一接口。
      JavaScript没有包管理系统。不能自动加载和安装依赖。

      于是便有了CommonJS（http://www.commonjs.org）规范的出现，其目标是为了构建JavaScript在包括Web服务器，桌面，命令行工具，及浏览器方面的生态系统。

      CommonJS制定了解决这些问题的一些规范，而Node.js就是这些规范的一种实现。Node.js自身实现了require方法作为其引入模块的方法，同时NPM也基于CommonJS定义的包规范，实现了依赖管理和模块自动安装等功能。这里我们将深入一下Node.js的require机制和NPM基于包规范的应用。

  </p>
    <a  href="/report">发表新文章</a>&nbsp;&nbsp;&nbsp;<a href="/index">主页</a>
</body>
</html>